// { dg-do compile { target c++20 } }
// { dg-additional-options "-fconcepts-ts" }

namespace zero
{
  template<int... s>
  struct S
  {
    template<int... f>
      requires(... and (s == f))
    static void F()
    {
    }
  };

  void foo(S<>) {}
}

namespace one
{
  template<typename X, typename Y> concept bool Foo = true;

  template<typename... T>
  struct foo
  {
    template<typename... U>
    foo(U...)
      requires (Foo<T, U> && ...)
    {}
  };

  void bar(foo<int, long, double>) {}
}

